SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[paAsignarOrden] 

@IDConvocatoria INT,
@EsTituloEspecifico VARCHAR(1),
@TipoReporte INT --0 = Reporte por localidad, 1= Reporte por Cargo (sin corte por localidad)

AS
SET NOCOUNT ON
DECLARE @Inscripcion INT
DECLARE @Agente INT
DECLARE @Localidad VARCHAR(100)
DECLARE @LocalidadT VARCHAR(100)
SET @LocalidadT = 'Nothing'
DECLARE @CargoGenerico VARCHAR(100)
DECLARE @CargoGenericoT VARCHAR(100)
SET @CargoGenericoT = 'Nothing'
DECLARE @AsignaturaGenerica VARCHAR(100)
DECLARE @AsignaturaGenericaT VARCHAR(100)
SET @AsignaturaGenericaT = 'Nothing'
DECLARE @CategoriaTitulo INT
DECLARE @Puntaje FLOAT
DECLARE @Promedio FLOAT
DECLARE @Especifico VARCHAR(1)
DECLARE @Counter INT
DECLARE @Nivel INT
DECLARE @NivelT INT
DECLARE @Ciclo INT
DECLARE @CicloT INT
DECLARE @Convocatoria INT
DECLARE @ConvocatoriaT INT

DECLARE @tipoconvocatoria as int
--DECLARE @TitEspecifico VARCHAR(1)

SET @NivelT = 0
SET @CicloT = 0
SET @ConvocatoriaT  = 0
SET @Counter = 0
DECLARE @error INT
SET @error = 0

DECLARE @SituacionRevista as int
DECLARE @tit as varchar (2)

BEGIN TRANSACTION

--este update deberia hacerlo cuando selecciona la convocatoria para poner el orden de merito
--set @Convocatoria=28
--set @TitEspecifico='N'

update tb_parametros set valor1=cast(@IDconvocatoria as varchar),valor2=@EsTituloEspecifico,Tipo2=@Tiporeporte   where idparametro=65

--set @Convocatoria=(select cast(valor1 as int) from tb_parametros where idparametro=65)
--set @Tit=(select cast(valor2 as varchar) from tb_parametros where idparametro=65)

set @tipoconvocatoria= (select tipoconvocatoria from tb_convocatorias where idconvocatoria=@idconvocatoria)

IF (@tipoconvocatoria=1 and @TipoReporte=0) -- Ingreso Interinatos y Suplencias
BEGIN
		print 'Reporte por  por localidad.....................................'

		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * FROM vwOrdenDeMeritoSinOrden 
		ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC

END

IF (@tipoconvocatoria=2 ) --Ascensos
BEGIN
		print 'Reporte de Ascensos, tiene corte por localidad y por situación de revista..........................'
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT * FROM vwOrdenDeMeritoSinOrden 
		ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG, isnull(situacionrevista,1),CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
END

IF (@tipoconvocatoria=9 ) or (@tipoconvocatoria=1 and @TipoReporte=1) -- Acumulacion y/o Acrecentamiento  o los reportes de ingreso que no tienen corte por localidad 
BEGIN
		print 'Reporte General de Toda la provincia, sin corte por localidad.....................................'
--		DECLARE X CURSOR FORWARD_ONLY FOR
--		SELECT * FROM vwOrdenDeMeritoSinOrden 
--		ORDER BY Convocatoria, Nivel, Ciclo,CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = 0 WHERE Convocatoria = @IDConvocatoria	--Blanqueo los nrodeorden anteriores
		DECLARE X CURSOR FORWARD_ONLY FOR
		SELECT Convocatoria, Nivel, Ciclo, max(idInscripcionConvocatoria) as idInscripcionConvocatoria, Agente,Localidad,CG, 
		               AG, CategoriaDeTitulo, Puntaje, PromedioTitulo, TituloEspecifico, SituacionRevista, 
		               tit FROM vwOrdenDeMeritoSinOrden 
--where cg='00050 - Maestro de Sección'
		group by
			Convocatoria, Nivel, Ciclo, Agente,Localidad,CG, 
		               AG, CategoriaDeTitulo, Puntaje, PromedioTitulo, TituloEspecifico, SituacionRevista,tit
		ORDER BY Convocatoria, Nivel, Ciclo,CG, AG,CategoriadeTitulo, Puntaje DESC, PromedioTitulo DESC
END

--SELECT * FROM vw_OrdenDeMeritoSinOrden
--ORDER BY Convocatoria, Nivel, Ciclo, Localidad, CG, AG, isnull(situacionrevista,1),CategoriadeTitulo, Puntaje DESC, Promedio DESC


OPEN X

FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Ciclo, @Inscripcion, @Agente, @Localidad, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit

WHILE @@FETCH_STATUS = 0 BEGIN

	SELECT @ConvocatoriaT = @Convocatoria, @NivelT = @Nivel, @CicloT = @Ciclo, @LocalidadT = @Localidad, @CargoGenericoT = @CargoGenerico, @AsignaturaGenericaT = @AsignaturaGenerica 
	
	WHILE @Convocatoria = @ConvocatoriaT AND @Nivel = @NivelT AND @Ciclo = @CicloT AND @Localidad = @LocalidadT AND @CargoGenerico = @CargoGenericoT AND @AsignaturaGenerica = @AsignaturaGenericaT AND @@FETCH_STATUS = 0 BEGIN
	
		SET @Counter = @Counter + 1
	print  @Inscripcion
	print @Counter
	
--		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter, Puntaje = @Puntaje, CategoriadeTitulo = @CategoriaTitulo, PromedioTitulo=@Promedio, TituloEspecifico = @Especifico WHERE IdInscripcionConvocatoria = @Inscripcion
		UPDATE tb_InscripcionesConvocatorias SET NroDeOrden = @Counter WHERE IdInscripcionConvocatoria = @Inscripcion		
		IF @@error <> 0 BEGIN
			SET @error = @@error
			GOTO Salir
		END

		FETCH NEXT FROM X INTO @Convocatoria, @Nivel, @Ciclo, @Inscripcion, @Agente, @Localidad, @CargoGenerico, @AsignaturaGenerica,  @CategoriaTitulo, @Puntaje, @Promedio, @Especifico,@SituacionRevista,@tit

	END
	SET @Counter = 0

END

CLOSE X
DEALLOCATE X


Salir:
IF @error <> 0 BEGIN
	ROLLBACK TRANSACTION
END
ELSE BEGIN
	COMMIT TRANSACTION
END
GO
